package controllers

import (
	"NewEdu/models"
	"NewEdu/utils"
	"encoding/json"
	"strconv"
	"time"

	beego "github.com/beego/beego/v2/server/web"
)

// 问题管理
type TQuestionController struct {
	beego.Controller
}

// AddTemplate ...
// @Title AddTemplate
// @Description 添加新的模板
// @Param	Authorization	header	string	true	" Token"
// @Param	tempName		query 	string	true		"模板的名字"
// @Param	body		body 	[]string	true		"问题列表"
// @Success 200 {object} models.TQuestion
// @Failure 403
// @router /AddTemplate [post]
func (c *TQuestionController) AddTemplate() {
	var netTemplate models.TQuestionTemplate
	netTemplate.Label = c.GetString("tempName")
	currentUser := c.Ctx.Input.GetData(models.CurrentUser).(*models.TUser)
	netTemplate.Author = currentUser.Name
	netTemplate.AuthorSn = currentUser.Sn
	netTemplate.Creattime = time.Now()
	err := json.Unmarshal(c.Ctx.Input.RequestBody, &netTemplate.Questions)
	if err != nil {
		c.Data["json"] = utils.Export(1001, "Unmarshal 不对", err.Error())
		c.ServeJSON()
		return
	}
	id, err := models.AddTQuestionTemplate(&netTemplate)
	if err != nil {
		c.Data["json"] = utils.Export(1001, "AddTQuestionTemplate 不对", err.Error())
		c.ServeJSON()
		return
	}
	netTemplate.Id = int(id)
	c.Data["json"] = utils.Export(1000, "ok", &netTemplate)
	c.ServeJSON()
}

// SaveQuestions ...
// @Title SaveQuestions
// @Description 添加新的问题
// @Param	Authorization	header	string	true	" Token"
// @Param	tempalteID		path 	int	true		"模板的id"
// @Param	body		body 	models.TQuestionTemplate	true		"问题列表"
// @Success 200 {object} models.TQuestionTemplate
// @Failure 403
// @router /updateTemplate/:tempalteID [post]
func (c *TQuestionController) UpdateTemplate() {
	tempalteID := c.Ctx.Input.Param(":tempalteID")
	tempID, _ := strconv.Atoi(tempalteID)
	var questionTemplate models.TQuestionTemplate
	questionTemplate.Id = tempID
	err := json.Unmarshal(c.Ctx.Input.RequestBody, &questionTemplate)
	if err != nil {
		c.Data["json"] = utils.Export(1001, "Unmarshal 不对", err.Error())
		c.ServeJSON()
		return
	}
	_, err = models.UpdateTQuestionTemplate(&questionTemplate)
	if err != nil {
		c.Data["json"] = utils.Export(1001, "UpdateTQuestionTemplate 不对", err.Error())
		c.ServeJSON()
		return
	}
	c.Data["json"] = utils.Export(1000, "ok", nil)
	c.ServeJSON()
}

// GetAll ...
// @Title GetAllTemplate
// @Description 获取所有的模板
// @Param	Authorization	header	string	true	" Token"
// @Success 200 {object} models.TQuestion
// @Failure 403
// @router /getAllTemplate [get]
func (c *TQuestionController) GetAllTemplate() {
	list, err := models.GetAllTemplate()
	if err != nil {
		c.Data["json"] = utils.Export(1001, "GetAllTemplate 不对", err.Error())
		c.ServeJSON()
		return
	}
	c.Data["json"] = utils.Export(1000, "ok", list)
	c.ServeJSON()
}
